package cn.tedu.controller;/**
 * @Author 金帮嘉诚 @Date 2021-07-14 星期三 14:42
 */
/*本类用于测试*/

import cn.tedu.pojo.Car;
import oracle.jrockit.jfr.StringConstantPool;
import org.springframework.web.bind.annotation.*;

import java.beans.IntrospectionException;

/**
 * 知识点
 * @RestController 如何接收和反应请求
 * @RequestMapping 如何调用方法 ，是HandlerMapping调用
 */
@RestController
@RequestMapping("car")
public class CarController {

    @RequestMapping("get")
    public Car get() {
        Car car = new Car();
        car.setId(100);
        car.setPrice(1.99);
        return car;
    }

    //参数引用类型，model的变量也要是引用类型，不然，不传参时会在网页报错
    @RequestMapping("add")
    public String add(Integer id, String user, Double price) {//提交的user属性值必须和此处参数名相同
        String s = id + user + price;
        System.out.println(s);
        return s;
//        String[] b=s.split("&");
//        String[] c=new String[b.length];
//        for (int i = 0; i <b.length ; i++) {
//            c[i]=b[i].split("=")[1];
//        }
//        return c;
    }

    //RestFul方式 add2/1/.../...
    @RequestMapping("add2/{id}")//此处必须和参数名相同
    //@PathVariable用来获取{}中间的值
    //每一个占位符{} 可以用 /参数值 的方式 传一个参  多了少了报404
    //这种方式下传参的链接格式：
    //href="http://localhost:8080/car/add2/1?user=BMW&price=9.9"
    public void add2(@PathVariable Integer id, String user, String price) {//写几个@PathVariable，就可以传几个参
        System.out.println(id+user+price);
    }

    //如果占位符不少写 但@PathVariable注解少写一个  Cannot resolve @PathVariable 'z' 会无法识别参数z但不会报错
    //如果页面的名称和后台形参的名称不一致,可以使用@RequestParam(“页面名称”),就必须指定值.
    @RequestMapping("insert/{x}/{y}/{z}")
    public Car insert(@PathVariable Integer x, @PathVariable String y, @PathVariable String z) {
        Car car = new Car();
        car.setId(x);
        car.setUser(y);
        car.setType(z);
        return car;
    }

    @CrossOrigin//跨域
    @RequestMapping("add1")
    public Car add1(Car car) {
        return car;
    }

    @CrossOrigin
    @RequestMapping("test1")//利用@RequestParam，获取页面中传来的某些指定值，右边的括号里是html元素的name属性值，用这个注解可以形参和name属性值不相同
    //这个方法只会解析传来的name值为user的html元素传来的值，其它值忽略
    public Car test1(@RequestParam("user") String x){
        Car car=new Car();
        car.setUser(x);
        return car;
    }
}
